#ifndef AER_HPP_
#define AER_HPP_

/// Classes to handle an application
#include "app/aerApplication.hpp"
#include "app/aerEventHandler.hpp"
#include "app/aerWindow.hpp"

/// DataStructure
#include "datastructure/aerBVH.hpp"
#include "datastructure/aerDistanceQueue.hpp"

/// Camera
#include "view/aerFreeCamera.hpp"

/// OpenGL device objects
#include "device/aerVertexArray.hpp"
#include "device/aerDeviceBuffer.hpp"
#include "device/aerProgram.hpp"
#include "device/aerQuery.hpp"
#include "device/aerTexture.hpp"
//#include "device/aerSampler.hpp"
#include "device/aerRenderbuffer.hpp"
#include "device/aerRenderTarget.hpp"
#include "device/aerRenderTexture.hpp"
#include "device/aerFrameBuffer.hpp"

/// Structure to handle memory allocation
/// more efficiently
#include "memory/aerStackAllocator.hpp"
#include "memory/aerPoolAllocator.hpp"

/// PostProcess
#include "postprocess/aerPostProcess.hpp"
//#include "postprocess/aerBloomEffect.hpp"

/// Miscs tools class
#include "aerOpenGL.hpp"
#include "aerTimer.hpp"
#include "aerMesh.hpp"
#include "aerMaterial.hpp"
#include "aerSortIndex.hpp"
#include "aerBoundingBox.hpp"
#include "aerIntersection.hpp"


#endif // AER_HPP_
